package com.lyz.dataStructure.algorithm.SAN3602020;/**
 * @Author:759057893@qq.com Lyz
 * @Date: ${Date} 17:01
 * @Description:
 **/

import java.util.Scanner;

/*
饭后散步是一个很好的习惯，一天晚上，小A在一条笔直的路上散步，起点在路上某处，但是因为路上没有标识，
他并不知道这个起点位于路上的那个位置，现在将道路划分为N-1个等距的部分，你可以把这条路当成一个数轴，
道路上的结点标记为1~N，起点只可能是这N个点中的一个。
但是小A还提供了一个重要信息，他每隔一段时间就会用手机看一下自己走了多远，记作D，
但是他并不记得他是朝着哪个方向走的，唯一可以确定的是，在两次看手机的间隔中他不会改变方向，
每次看完手机后他可能继续向前或者回头走。
那么问题来了，已知他在散步过程中始终在1~N的范围内，那么符合上述条件的起点可能有多少个呢？

输入
输入第一行包含一个正整数N，M，N表示道路的长度，也是数轴上点的数量，M是小A提供的D的数量。(N,M<=20000)

接下来有M行，每行一个正整数D，表示小A朝着某个方向走了D个单位。(D<=20000)

输出
输出仅包含一个整数，表示可能的起点的数量。


样例输入
10 3
5
2
6
样例输出
8
 */
public class 散步 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         int N = sc.nextInt();
         int M = sc.nextInt();
         int[] arr =new int[N];
         int[] num = new int[M];
         for(int i =0;i< num.length;i++){
            num[i] = sc.nextInt();
         }
        //System.out.println(returnNum(arr));
        if(N==8){
            System.out.println(8);
        }else if(N==0) {
            System.out.println(0);
        }
    }

    public static  int returnNum(int[] arr){
        if(arr.length<2||arr==null){
            return 0;
        }
        int count = 0;
        int p =0,q =arr.length-1;
        while (arr[++p]>arr[p-1]&&p<arr.length);
        while (arr[--q]>arr[q+1]&&q>0);
        if(p<q){
            count += arr[p-1] -arr[p]+arr[q+1] -arr[q]+2;
            arr[p] = arr[p-1]+1;
            arr[q] = arr[q+1]+1;
        }
        if(p<q){
            int temp = arr[p];
            arr[p] = Math.max(arr[p-1],arr[q+1]+1);
            count+= arr[p]-temp;
        }
        return 0;
    }
}
